########################################################################
#  Searx-qt - Lightweight desktop application for SearX.
#  Copyright (C) 2020  CYBERDEViL
#
#  This file is part of Searx-qt.
#
#  Searx-qt is free software: you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation, either version 3 of the License, or
#  (at your option) any later version.
#
#  Searx-qt is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
########################################################################

from PyQt5.QtWidgets import (
    QWidget,
    QVBoxLayout,
    QHBoxLayout,
    QLabel
)

from PyQt5.QtCore import Qt

from searxqt.widgets.buttons import Button


class CollapsableGroupBox(QWidget):
    def __init__(self, txt="", parent=None):
        QWidget.__init__(self, parent=parent)
        l = QVBoxLayout(self)

        # -- Header
        headerL = QHBoxLayout()
        l.addLayout(headerL, 0)

        self.collapseButton = Button("^", self)
        headerL.addWidget(self.collapseButton, 0, Qt.AlignTop)

        headerLabel = QLabel(txt, self)
        headerL.addWidget(headerLabel, 0, Qt.AlignTop)

        self.collapseButton.clicked.connect(self.toggleState)

        # -- Content
        self._contentWidget = QWidget(self)
        l.addWidget(self._contentWidget, 0, Qt.AlignTop)

    @property
    def contentWidget(self): return self._contentWidget

    def toggleState(self):
        if self._contentWidget.isHidden():
            self.collapseButton.setText("^")
            self._contentWidget.show()
        else:
            self.collapseButton.setText(">")
            self._contentWidget.hide()
